/*
 *  X 进制减法
 *
 *  关于这个题目的感想就是用到一个规律，所有A的前缀肯定会大于B的前缀，就需要让，每个对应的位取大的那个的+1
 *  为了n的相乘就用到了秦久韶算法
 *
 * */

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 100010, MOD = 1000000007;

int n, m1, m2, m;

int a[N], b[N];

int main() {

    scanf("%d", &n);
    scanf("%d", &m1);
    for (int i = m1 - 1; i >= 0; i--) {
        scanf("%d", &a[i]);
    }
    scanf("%d", &m2);
    for (int i = m2 - 1; i >= 0; i--) {
        scanf("%d", &b[i]);
    }

    int res = 0;
    for (int i = m1 - 1; i >= 0; --i) {
        // max可以传入一个vector，比较vector内最大的元素
        res = (res * (long long)max({2, a[i] + 1, b[i] + 1}) + a[i] - b[i]) % MOD;
    }

    printf("%d\n", res);

    return 0;

    return 0;
}